VisualHMI - 控件权限
什么是控件权限?
当某种条件下,控件需要使能/禁止、可见/隐藏。VisualHMI所有控件支持该功能,组态配置最多两个条件逻辑判断
使用范围:VisualHMI - HMI&M系列
1.属性说明
控件配置相关属性说明如下所示:
控件权限:√。开启既可以配置条件
条件地址:寄存器地址
比较:读取地址和值之间的比较关系,包括==、!=、<=、>=、<、>、IN:值在范围内(含边界)、OUT:值在范围外(不含边界);
值:与读取地址比较的数值,一般只有一个数值。当比较选择了IN、OUT时,有两个数值,包括下限值和上限值;
附加条件:AND/OR。AND且运算,OR或运算
附加-条件地址:寄存器地址
附加比较:读取地址和值之间的比较关系,包括==、!=、<=、>=、<、>、IN:值在范围内(含边界)、OUT:值在范围外(不含边界);
附加值:与读取地址比较的数值,一般只有一个数值。当比较选择了IN、OUT时,有两个数值,包括下限值和上限值;
- 无权限时:隐藏控件/禁止触控。即当条件满足时候,控件将可见,可触控
2.应用
2.1.单条件显示隐藏
2.1.1.工程配置
画面中添加一个文字控件,用于LW1000 = 1显示,LW1000=0隐藏控件,配置如下所示
- 控件权限:√。
- 条件地址:LW1000
- 比较:==
- 值:1
- 无权限时:隐藏控件
2.1.2.运行预览
运行虚拟屏。点击LW1000=0按钮,设置LW1000寄存器值,文字控件“广州大彩”实时显示隐藏,,如下所示:
2.2.双条件显示隐藏
2.2.1.工程配置
画面中添加一个文字控件,用于LW1000 = 0 且 LW1001=1显示控件,反之隐藏,配置如下所示
- 控件权限:√
条件地址:LW1000
比较:=
值:1
附加条件:AND
附加-条件地址:LW1001
附加-比较:=
附加-值:1
- 无权限时:隐藏控件
2.2.2.运行预览
运行虚拟屏。点击按钮,设置LW1000=0、设置LW1001为1,此时RTC控件显示,反之隐藏,如下所示:
2.3.双条件使能禁止
2.3.1.工程配置
画面中添加一个多状态指示灯,用于LW1000 = 0 且 LW1002=1允许触控,反之禁止触摸,配置如下所示
- 控件权限:√
条件地址:LW1000
比较:==
值:1
附加条件:OR
附加-条件地址:LW1002
附加-比较:==
附加-值:1
- 无权限时:禁止触控
2.3.2.运行预览
运行虚拟屏。点击按钮,设置LW1000 、LW1001任意一个为1时,多状态指示灯允许触控设置寄存器,反之点击无反应,如下所示:
2.4.多条件使能禁止
实际应用中,可能会出现多个寄存器一起控制控件的显示/隐藏,或触控使能。控件权限组态配置最多2个条件,若有3个或更多,需要用LUA脚本处理,将多条件逻辑运算输出结果
2.4.1.工程配置
画面中添加一个多状态控件,用于多寄存器控制允许触摸(LW1000 = 1 &&LW1001 = 1&&LW1002 = 1)、禁止触摸,配置如下所示
- 控件权限:√。
- 条件地址:LW1100(将LW1000 、LW1001 、LW1002的运算结果,设置到该寄存器)
- 比较:==
- 值:1
- 无权限时:隐藏控件
2.4.2.LUA脚本
在on_run回调函数里面,获取LW1000 、LW1001 、LW1002 的值,进行判断,在赋值给LW1100地址,如下所示:
function on_init()
local _val1 = get_uint16(VT_RW, 0x1000)
local _val2 = get_uint16(VT_RW, 0x1001)
local _val3 = get_uint16(VT_RW, 0x1002)
if _val1 == 1 and _val2 == 1 and _val3 == 1
then
set_uint16(VT_RW, 0x1100, 1)
esle
set_uint16(VT_RW, 0x1100, 0)
end
end
2.4.3.运行预览
运行虚拟屏。点击按钮,设置LW1000 、LW1001、LW1002均为1,多状态指示灯运行触控点击,反之,点击无效,如下所示: